package presenter

import (
	"errors"
	"fmt"
	"strings"
)

var (
	// parameter error
	ErrParamEmpty  = func(param string) error { return fmt.Errorf("必填参数 %s 为空", param) }
	ParamLengthErr = errors.New("参数长度超出范围")

	// tenant error
	ErrTenantIDEmpty   = errors.New("用户ID为空")
	ErrInstanceIDEmpty = errors.New("实例ID为空")

	// cluster error
	ErrClusterNotExist       = errors.New("该租户无此集群")
	ErrClusterNotAccessible  = errors.New("无权限访问该集群")
	ErrClusterDeleted        = errors.New("该集群已被删除，无法操作")
	ErrClusterNotRunning     = errors.New("该集群不在运行中")
	ErrClusterDeleteHasTopic = errors.New("该集群存在主题，不允许删除")
	ErrClusterNeedParam      = errors.New("需要指定集群实例参数：instanceID 或者 clusterID")

	// topic error
	ErrTopicNotExist      = errors.New("该主题不存在")
	ErrTopicNotAccessible = errors.New("无权限访问该主题")
	ErrTopicDeleted       = errors.New("该主题已被删除，无法操作")
	ErrTopicNumExceed     = errors.New("主题数量达到上限，无法创建")
	ErrTopicExist         = errors.New("topic already exists")

	// consumer group
	ErrConsumerGroupNotExist = errors.New("消费组不存在")

	// partition error
	ErrPartitionNotExist = errors.New("分区不存在")
)

func IsExistError(err error) bool {
	if err == nil {
		return false
	}
	return strings.Contains(err.Error(), "Duplicate entry")
}
